package com.uzhie.web.dao;

import com.uzhie.web.module.Warning;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds;
import tk.mybatis.mapper.common.Mapper;

import java.util.Date;
import java.util.List;

/**
 * 报警警告数据操作
 * Created by lilongfei on 2018/7/31.
 */
public interface WarningDAO extends Mapper<Warning> {

    /**
     * 通过报警类别和部门获取所有告警信息
     *
     * @param category
     * @param departId
     * @return
     */
    List<Warning> queryListByConditions(@Param("category") String category, @Param("list") List<String> departId,
                                        @Param("vehicleNumber") String vehicleNumber, @Param("driver") String driver,
                                        @Param("startTime") String startTime, @Param("endTime") String endTime,
                                        RowBounds page);

    /**
     * 通过部门获取当天的车辆报警
     *
     * @param category
     * @param departId
     * @return
     */
    List<Warning> queryListByDepart(@Param("category") String category, @Param("list") List<String> departId,
                                    @Param("vehicleNumber") String vehicleNumber, @Param("driver") String driver,
                                    @Param("startTime") String startTime, @Param("endTime") String endTime,
                                    RowBounds page);


    /**
     * 查询告警类型的未处理总数
     *
     * @param category
     * @return
     */
    int queryLabelByCategory(@Param("category") String category, @Param("list") List<String> departId);


    /**
     * 报警处理报表查询
     *
     * @param simNumber
     * @param vehicleNumber
     * @param driver
     * @param telephone
     * @param handlerName
     * @param beginTime
     * @param endTime
     * @param handBeginTime
     * @param handEndTime
     * @return
     */
    List<Warning> handlerReport(
            @Param("userId") String userId,
            @Param("simNumber") String simNumber,
            @Param("vehicleNumber") String vehicleNumber,
            @Param("driver") String driver,
            @Param("telephone") String telephone,
            @Param("handlerName") String handlerName,
            @Param("beginTime") String beginTime,
            @Param("endTime") String endTime,
            @Param("handBeginTime") String handBeginTime,
            @Param("handEndTime") String handEndTime,
            RowBounds rowBounds
    );

    /**
     * 通过sim卡号和时间范围更新报警状态
     *
     * @param simNumber 报警设备的sim卡
     * @param startTime 修改范围的起始时间
     * @param endTime   修改范围的截止时间
     * @param status    修改状态
     * @return
     */
    int updateBySimAndTimeFrame(@Param("simNumber") String simNumber, @Param("category") String category,
                                @Param("startTime") String startTime, @Param("endTime") String endTime,
                                @Param("status") Integer status, @Param("handlerId") String handlerId,
                                @Param("handlerName")String handlerName, @Param("handlerTime")Date handlerTime,
                                @Param("remark") String remark
    );
}
